﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using WarehouseManagement.BusinessLogic.BC;
using WarehouseManagement.Shared;
using System.Linq;

namespace WarehouseManagement.Views.Login
{
    public partial class ChangePassword : DevExpress.XtraEditors.XtraForm
    {
        UserBC _userBC;

        public ChangePassword()
        {
            InitializeComponent();
            _userBC = new UserBC();
        }

        private void btnChange_Click(object sender, EventArgs e)
        {
            var errList = ValidateForm();
            if (errList.Count() > 0)
            {
                XtraMessageBox.Show(string.Join("\n", errList), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            try
            {
                _userBC.ChangePassword(GlobalMemory.CurrentLoginUser, txtNewPassword.Text);
                XtraMessageBox.Show("Mật khẩu đã được thay đổi", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
            catch
            {
                XtraMessageBox.Show("Không thể thay đổi mật khẩu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private IEnumerable<string> ValidateForm()
        {
            if (string.IsNullOrEmpty(txtOldPassword.Text))
                yield return "Yêu cầu nhập mật khẩu cũ";
            else
            {
                if (!_userBC.Authenticate(GlobalMemory.CurrentLoginUser, txtOldPassword.Text))
                    yield return "Mật khẩu cũ không chính xác";
            }

            if (string.IsNullOrEmpty(txtNewPassword.Text))
                yield return "Yêu cầu nhập mật khẩu mới";           
            else
            {
                if (!txtConfirmNewPassword.Text.Equals(txtNewPassword.Text))
                    yield return "Nhập lại mật khẩu mới không khớp";
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}